/**
 *	@file	safario_3d.h
 *	@brief	サファリOBJ配置 3Dヘッダ
 *	@author	Miyuki Iwasawa
 *	@date	06.03.28
 */

#ifndef __H_SAFARIO_3D_H__
#define __H_SAFARIO_3D_H__

#include "field/field_3d_anime_local.h"

//-------------------------------------
//	3Dオブジェクト	アニメ
//=====================================
typedef struct _SAFARIO_3DANM{
	void*					pResAnm;		// アニメリソース
	void*					pOneResAnm;		// 1つ切り取ったリソース
	NNSG3dAnmObj*			pAnmObj;			// アニメーションオブジェ
	fx32 frame;
	BOOL res_copy;
} SAFARIO_3DANM;

//-------------------------------------
//	3Dオブジェクト
//	モデル　テクスチャ
//=====================================
typedef struct _SAFARIO_3DMDL{
	void*					pResMdl;		// モデルデータ
	NNSG3dResMdlSet*		pModelSet;		// モデルセット
	NNSG3dResMdl*			pModel;			// モデルリソース
	NNSG3dResTex*			pMdlTex;		// モデルに貼り付けるテクスチャ

	NNSG3dRenderObj			render;		// レンダーオブジェクト

	SAFARIO_3DANM			anm[ONE_MODEL_ANM_NUM_MAX];
	u16						valid;
	u16						anm_num;
}SAFARIO_3DMDL;

typedef struct _SAFARIO_3DWORK{
	GF_CAMERA_PTR	camera;
	NNSFndAllocator allocator;
	int				heapID;
	ARCHANDLE*		ph_obj;
	ARCHANDLE*		ph_minfo;
	ARCHANDLE*		ph_anm;
	SAFARIO_3DMDL	mdl;
	VecFx32			target;

	void*	plt_memory;	///<パレットマネージャ用メモリ
	void*	tex_memory;	///<テクスチャマネージャ用メモリ

	u8		draw_f;
	u8		anm_time_zone;	//アニメーションのためのタイムゾーン

#ifdef PM_DEBUG
	VecFx32	d_target;
	fx32	d_distance;
#endif
}SAFARIO_3DWORK;

#define POKEA_INI_PX	(128)	///<デモポケモン初期座標X
#define POKEA_INI_PY	(96)	///<デモポケモン初期座標Y

/**
 *	@brief	3D関連初期化
 */
extern void SafariObj_3DInit(SAFARIO_3DWORK* wk,u8 anm_time_zone,int heapID);
extern void SafariObj_3DMain(SAFARIO_3DWORK* wk);
extern void SafariObj_3DRelease(SAFARIO_3DWORK* wk);

/**
 *	@brief	オブジェクトチェンジ
 */
extern void SafariObj_ModelChange(SAFARIO_3DWORK* wk,SAFARI_OBJ_ID id,SAFARI_OBJ_PARAM* prm);
/**
 *	@brief	オブジェクト描画フラグ制御
 */
extern void SafariObj_ModelVisibleSet(SAFARIO_3DWORK* wk,BOOL flag);

#ifdef PM_DEBUG
extern BOOL Debug_SafariObj_CameraSet(SAFARIO_3DWORK* wk);
#endif

#endif	//__H_SAFARIO_3D_H__